package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import com.atguigu.jxc.entity.GoodsType;
import com.atguigu.jxc.entity.Unit;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @description 商品信息
 */
public interface GoodsDao {

    String getMaxCode();

    List<Goods> list(@Param("page") Integer page, @Param("rows") Integer rows,
                              @Param("goodsName") String goodsName,
                              @Param("goodsTypeId") Integer goodsTypeId);

    List<Goods> listInventory(@Param("page") Integer page, @Param("rows") Integer rows,
                     @Param("codeOrName") String codeOrName);

    List<Unit> unitList();

    void saveGoods(@Param("goods") Goods goods);

    void updateGoods(@Param("goods") Goods goods);

    Goods selectById(@Param("goodsId") Integer goodsId);

    void deleteById(@Param("goodsId") Integer goodsId);

    List<Integer> selectByPid(@Param("goodsTypeId") Integer goodsTypeId);


    List<Goods> selectGoodsByGoodsTypeId(@Param("page") int page, @Param("rows") Integer rows, @Param("codeOrName") String codeOrName, @Param("goodsTypeIdList") List<Integer> goodsTypeIdList);

    List<Goods> getNoInventoryQuantity(@Param("page") Integer page, @Param("rows") Integer rows,
                                       @Param("codeOrName") String codeOrName);

    List<Goods> getHasInventoryQuantity(@Param("page") Integer page, @Param("rows") Integer rows,
                                        @Param("codeOrName") String codeOrName);

    void deleteStock(@Param("goodsId") Integer goodsId);


    void updateStock(@Param("goodsId") Integer goodsId);

    List<Goods> listAlarm();

}
